#ifndef ITERSECU_H
#define ITERSECU_H

#include "Secuencia.h"
#include "nodo.h"

using namespace std;

template <class T1> class Secuencia;


template <class T> class iterSecu{
	friend class Secuencia<T>;
           public:
                  iterSecu(void);
                  ~iterSecu(void);

                  void crearIt(const Secuencia<T> &s);
                  bool tieneProximo(void);
                  T proximo(void);
                  

           private:

                   Nodo<T>* actual;
};


template <class T> iterSecu<T>::iterSecu(void){};

template <class T> iterSecu<T>::~iterSecu(void){};

template<class T> void iterSecu<T>::crearIt(const Secuencia<T> &s){
	actual = s.inicial;
}

template <class T> bool iterSecu<T>::tieneProximo(void){
        return (actual != NULL);
}

template <class T> T iterSecu<T>::proximo(void){
    T* aux;
    assert(actual != NULL);
    aux = &(actual->dato);
        actual = actual->proximo;
        return *aux;
};

#endif
